package com.ocm.core.mapping;

import java.util.List;

import com.ocm.core.domain.ClassDefinition;
import com.ocm.core.domain.UserDetail;
import com.ocm.core.domain.PropertyDefinition;
import com.ocm.core.domain.Storage;
import com.ocm.core.dto.ClassDefinitionDto;
import com.ocm.core.dto.GroupDto;
import com.ocm.core.dto.PropertyDefinitionDto;
import com.ocm.core.dto.StorageDto;
import com.ocm.core.dto.UserInfoDto;

public interface DTOService {

   public PropertyDefinitionDto convertPropertyDto(PropertyDefinition property, DTOConfiguration dtoMappingConfigure);

   public List<PropertyDefinitionDto> convertPropertyDtos(List<PropertyDefinition> properties, DTOConfiguration dtoMappingConfigure);

   public ClassDefinitionDto convertClassDto(ClassDefinition classDefinition, DTOConfiguration dtoMappingConfigure);

   public List<ClassDefinitionDto> convertClassDefDtos(List<ClassDefinition> classDefs, DTOConfiguration dtoMappingConfigure);

   public StorageDto convertStorageDto(Storage storage, DTOConfiguration dtoMappingConfigure);

   public List<StorageDto> convertStorageDtos(List<Storage> storages, DTOConfiguration dtoMappingConfigure);

   public List<GroupDto> convertGroupDtos(List<UserDetail> groups, DTOConfiguration dtoMappingConfigure);

   public GroupDto convertGroupDto(UserDetail groups, DTOConfiguration dtoMappingConfigure);

   public UserInfoDto convertUserDto(UserDetail userInfo, DTOConfiguration dtoMappingConfigure);

   public List<UserInfoDto> convertUserDtos(List<UserDetail> userInfos, DTOConfiguration dtoMappingConfigure);

   public String[] getExcludes(DTOConfiguration configuration);
}
